package org.dromara.common.translation.core.impl;

import org.dromara.common.core.service.DictService;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.translation.annotation.TranslationType;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.common.translation.core.TranslationInterface;
import lombok.AllArgsConstructor;


/**
 * @Author 刘武贵
 * @Date 2024/8/15 22:00
 * @Description 功能描述：字典翻译实现
 */
@AllArgsConstructor
// 指定翻译类型，将字典类型代码转换为对应的标签
@TranslationType(type = TransConstant.DICT_TYPE_TO_LABEL)
/**
 * DictTypeTranslationImpl类实现了TranslationInterface<String>，用于提供字典类型翻译的实现逻辑
 * 该类专注于字符串类型的翻译操作，是翻译服务的一部分
 */
public class DictTypeTranslationImpl implements TranslationInterface<String> {

    /**
     * 通用 字典服务
     */
    private final DictService dictService;

    /**
     * 翻译方法，用于根据提供的键和备用字符串查找字典服务中的标签
     *
     * @param key 键，通常是一个标识符，这里用来检查是否为字符串类型
     * @param other 备用字符串，用于在字典服务中查找对应的标签
     * @return 返回找到的标签字符串，如果没有找到则返回null
     */
    @Override
    public String translation(Object key, String other) {
        // 检查key是否为字符串类型且other非空，这种情况下才尝试从字典服务中查找标签
        if (key instanceof String dictValue && StringUtils.isNotBlank(other)) {
            return dictService.getDictLabel(other, dictValue);
        }
        return null;
    }
}
